System virtualization creates several virtual systems within a single physical system. Each virtual system is a logical division or sharing of physical resources, such as a percentage of real processor capacity, an amount of real memory, an amount of storage and a percentage of network I/O capacity. While a specific real processor can in some cases be allocated to a virtual system, the virtual system is not a self-contained computer containing the real processor but is formed with other virtual systems from the same real computer. Virtualization of resources can also be implemented by combining multiple physical resources into shared pools from which virtual resources may be retrieved and shared by multiple entities. In some computer platforms virtualization is implemented by logical partitions of physical resources.
FIG. 1 illustrates a known real computer 100 including a failover configuration according to the prior art. Real computer 100 includes a hypervisor or logical partitioning program 112 to logically divide the physical resources of real computer 100 into multiple logical partitions (LPARs) 103a-e. A Virtual I/O Client (VIOC) system and a Virtual I/O Server (VIOS) system can be formed in separate LPARs in the same or different real computers by installation of I/O client software and I/O server software in the respective LPARs. In the example illustrated in FIG. 1, VIOCs 104a-c are formed in respective LPARs 103a-c, and VIOSs 104d-e are formed in respective LPARs 103d-e in the same real computer 100. Hypervisor program 112 forms LPARs 103a-e from the physical resources of real computer 100, performs standard operating system functions, and manages the communication between LPARs 103a-e via virtual switch 114. VIOCs 104a-c have respective virtual Ethernet adapters 106a-c for communicating with one another. VIOSs 104d-e have respective virtual Ethernet adapters 106d-e for communicating with VIOCs 104a-c. VIOSs 104d-e provide virtualized network resources to VIOCs 104a-c via respective shared Ethernet adapters (SEA) 108a-b which bridge respective physical Ethernet adapters 110a-b to respective virtual Ethernet adapters 106a-e. Physical Ethernet adapters 110a-b connect real computer 100 to external network 120 via respective physical switches 122a-b. Hypervisor program 112 is a thin layer of software that copies data from the memory of one of VIOCs 104a-c to memory of one of VIOSs 104d-e when the one of VIOCs 104a-c sends a request to transmit data to external network 120.
In a failover configuration, each SEA is given a priority value to determine which SEA, and in turn which VIOS, will serve as the primary and which will serve as the backup. In the example illustrated in FIG. 1, VIOS 104d serves as a primary VIOS and VIOS 104e serves as a failover VIOS. In other words, virtual switch 114 and Remote Direct Memory Access (RDMA) program 116 route data to external network 120 through SEA 108a of VIOS 104d while SEA 108b of VIOS 104e remains inactive. When VIOS 104d fails, VIOS 104d notifies VIOS 104e via control channel 124 to become the primary VIOS and receive routed data to transmit to external network 120. As a result, network bandwidth is not optimally utilized since network bandwidth of VIOS 104e is unutilized while in failover mode. Also, transitioning to the failover VIOS 104e in the prior art is not seamless when primary VIOS 104d fails because transitioning to a failover VIOS requires updating a MAC table with the IP address of the failover VIOS. The update typically causes a delay which results in lost data packets.